package com.neuedu.Tree;


import java.util.LinkedList;
import java.util.Queue;

/**
 * 101集 , 层序遍历(二叉树，一层一层去遍历)
 */
public class E01Leetcode102 {
    public static void main(String[] args) {

        //创建树
        TreeNode root = new TreeNode(
                new TreeNode(new TreeNode(null, 4, null), 2, new TreeNode(null, 5, null)),
                1,
                new TreeNode(new TreeNode(null, 6, null), 3, new TreeNode(null, 7, null))
        );

        // 自写的 链表实现队列  ， 存在问题
        //todo 链表实现队列 去测试用例
//        LinkedListQueue<TreeNode> queue = new LinkedListQueue();
        Queue<TreeNode> queue = new LinkedList();
        //将头加入到队列中
        queue.offer(root);

        //实现层序遍历
        while (!queue.isEmpty()){
            TreeNode poll = queue.poll();//弹出队列
            System.out.println(poll);
            if (poll.left != null){//判断此节点是否有左孩子，存在即加入到队列
                queue.offer(poll.left);
            }
            if (poll.right != null){//判断此节点是否有右孩子，存在即加入到队列
                queue.offer(poll.right);
            }
        }

    }

}
